package com.doitedu.day05.oob

/**
 * 建议不要在同一个文件中写不同的类
 * @Date 22.6.25
 * @Created by HANGGE
 * @Description
 * class
 *   用来封装数据: 在创建实例的时候  封装数据
 *               创建不同的实例  封装不用的数据
 * 1,zss,23    实例
 * 2,lss,33    实例
 */
class _02Demo01(val id:Int,val name:String,val age:Int) {
  private  val  gender = "M"
  var addr:String = _

  def showContext = {
    // 访问伴生对象的私有属性
    println(_02Demo01.msg)
  }
}
/**
 * 在同一个文件中  名字一致
 * object   伴生对象
 * class    伴生类
 * 伴生关系
 *    互相访问彼此的私有属性和私有方法
 *    1) 伴生对象可以访问伴生类的私有属性
 *    2) 伴生类可以访问伴生对象的私有属性
 *    3) 伴生对象可以访问伴生类的私有方法/函数
 *    4) 伴生类可以访问伴生对象的私有方法/函数
 *    5) 一般使用 apply方法  在伴生对象中为伴生类创建实例
 *  注意: 优先使用对象 
 *       使用类: 需要构造器时                封装数据使用 case class
 */
object  _02Demo01{
  private  val msg:String = "hello"

  def apply() =new _02Demo01(1, "zss" ,23)

  def main(args: Array[String]): Unit = {
    val zss = new _02Demo01(1, "zss", 23)
    println(zss.gender)
    _02Demo01()
  }
}